#pragma once
#include <iostream>
#include <boost/lexical_cast.hpp>
#include "opcode.hpp"

struct Instruction {
	Instruction(int identifier, Opcode opcode, int argA, int argB, int ret);
	
	bool operator==(Instruction const& other) const;

	int id; // identifier
	Opcode op; // opcode
	int argA; // arg a
	int argB; // arg b
	int ret; // arg r

	std::string pretty_print() const {
		return "Instruction [" + boost::lexical_cast<std::string>(id) + " " + boost::lexical_cast<std::string>(op) + " " + boost::lexical_cast<std::string>(argA) + " " + boost::lexical_cast<std::string>(argB) + " "+ boost::lexical_cast<std::string>(ret) + "]";
	}
};



